Usb sharing switch with automatic switching capabilities

ABSTRACT

A USB printer sharing switch device with automatic switching capabilities is provided for multiple computers to share a USB printer. The sharing switch device transfers USB data between the computers and the printer without changing the data format. The automatic switching function is performed by hardware and firmware of the sharing switch device in cooperation with driver software on the computers. In one implementation, the sharing switch device includes multiple USB device controllers corresponding to the multiple computers, and employs multiple switches and a USB hub so that each computer is connected to its corresponding controller and the computer that is currently connected to the printer can communicate with its controller while printing. The current computer transmits a spooling finished command to its controller when spooling is finished. After receiving the spooling finished command, the sharing switch device automatically switches the printer to another computer.

BACKGROUND OF THE INVENTION

1. Field of the Invention

This invention relates to a USB sharing switch device, and inparticular, it relates to a USB sharing switch device which hasautomatic switching capabilities.

2. Description of the Related Art

A sharing switch device is a device that connects multiple computers toone or more peripheral devices such as printers, scanners, storagedevices, etc., which allows the computers to share the peripheraldevices. The sharing switch device selectively connects one of thecomputers to a peripheral device. A USB sharing switch device uses theUSB (Universal Serial Bus) protocol for communication between thecomputers and the peripheral devices. In a conventional USB sharingswitch device, switching is done manually by either pressing a button onthe sharing switch device or sending a command from the computer to thesharing switch device. The USB sharing switch device is connected toboth the computers and the peripheral device by USB cables, and data inthe USB format is transferred through the sharing switch device withoutchanging their format.

Another type of devices for sharing a printer by multiple computers is aprinter server. Typically, the computers are connected to the printerserver via a network such as Ethernet, and the printer server isconnected to the printer by a cable such as a USB cable. The printerserver processes packet data received from the computers over thenetwork and transform it into USB data for the printer.

SUMMARY OF THE INVENTION

The present invention is directed to a USB sharing switch device andrelated method that substantially obviate one or more of the problemsdue to limitations and disadvantages of the related art.

An object of the present invention is to provide a USB sharing switchdevice for printers which has automatic switching capabilities.

Additional features and advantages of the invention will be set forth inthe descriptions that follow and in part will be apparent from thedescription, or may be learned by practice of the invention. Theobjectives and other advantages of the invention will be realized andattained by the structure particularly pointed out in the writtendescription and claims thereof as well as the appended drawings.

To achieve these and other advantages and in accordance with the purposeof the present invention, as embodied and broadly described, the presentinvention provides a sharing switch device for coupling to a peripheraldevice and a plurality of computers, which includes: a plurality ofcomputer-side switches each for coupling to a corresponding computer; ahub device having an upstream end coupled to the plurality ofcomputer-side switches, a first downstream end for coupling to theperipheral device, and a second downstream end; a plurality ofcontrollers each coupled to a corresponding computer-side switch,wherein each computer-side switch switches the corresponding computer toeither the corresponding controller or the upstream end of the hubdevice; and a controller-side switch coupled to the plurality ofcontrollers and to the second downstream end of the hub device forswitching the second downstream end of the hub device to one of thecontrollers.

Specifically, the controllers control the switching of the computer-sideswitches and the controller-side switch to switch one of thecomputer-side switches corresponding to a selected one of the computersto the hub device, switch the other computer-side switches to theircorresponding controllers, and switch the controller-side switch to thecontroller corresponding to the selected computer, whereby the selectedcomputer is connected to the peripheral device via the correspondingcomputer-side switch and the hub device.

Further, a master controller of the sharing switch maintains a queue ofswitching requests received from the computers, and when the mastercontroller receives a data transfer finished command from a computer, itretrieves a next switching request from the queue and initiatesswitching of the computer-side switches and the controller-side switchto connect a next computer to the peripheral device.

In another aspect, the present invention provides a sharing switchdevice for coupling to a peripheral device and a plurality of computers,which includes: a plurality of N computer-side switches each forcoupling to a corresponding computer; a common connection line forcoupling to the peripheral device, the common connection line beingcoupled to the N computer-side switches; a busy detection circuitcoupled to the common connection line for detecting a busy condition ofthe common connection line and generating signals representing adetection result; a plurality of N−1 controllers; and a plurality ofcontroller-side switches coupled to the N−1 controllers and to the Ncomputer-side switches for switching any combination of N−1 out of the Ncomputer-side switches to the N−1 controllers, wherein eachcomputer-side switch switches the corresponding computer to either thecommon connection line or to one or more of the controller-sideswitches.

Specifically, the controllers control the switching of the computer-sideswitches and the controller-side switches to switch the computer-sideswitch corresponding to a selected computer to the common connectionline, switch the other N−1 computer-side switches to the controller-sideswitches, and switch the controller-side switches to connect the otherN−1 computer-side switches to the N−1 controllers, whereby the selectedcomputer is connected to the peripheral device.

Further, a master controller of the sharing switch maintains a queue ofswitching requests received from the computers, the busy detectioncircuit transmits the signals representing the detection result to themaster controller, and the master controller determines whether datatransfer is finished based on the signals from the busy detectioncircuit; when it determines that data transfer is finished, the mastercontroller retrieves a next switching request from the queue andinitiates switching of the computer-side switches and thecontroller-side switches to connect a next computer to the peripheraldevice.

In another aspect, the present invention provides a method implementedin a peripheral device sharing system including a sharing switch deviceand a peripheral device and a plurality of computers coupled to thesharing switch device, where the method includes, on the sharing switchdevice: (a) connecting a currently selected computer to the peripheraldevice; (b) receiving switching requests from the plurality ofcomputers; (c) placing the switching requests in a queue; (d)determining whether the data transfer between the currently selectedcomputer and the peripheral device has finished; and (e) if it isdetermined that the currently selected computer has finishedtransferring data, retrieving a next switching request from the queueand connecting a next selected computer to the peripheral device basedon the next switching request.

The method further includes, on each computer: (f) automaticallytransmitting a switching request to the sharing switch device when aprogram on the computer requests a data transfer to or from theperipheral device; (g) monitoring a connected status for the peripheraldevice; and (h) after determining that the peripheral device isconnected, transferring data to or from the peripheral device.

It is to be understood that both the foregoing general description andthe following detailed description are exemplary and explanatory and areintended to provide further explanation of the invention as claimed.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a system including a sharing switch deviceaccording to a first embodiment of the present invention.

FIG. 2 illustrates the operation of the sharing switch device of thefirst embodiment using a particular example.

FIG. 3 illustrates a process performed by a program on a computerconnected to the sharing switch device of FIG. 1.

FIG. 4 is a block diagram of a system including a sharing switch deviceaccording to a second embodiment of the present invention.

FIG. 5 illustrates the operation of the sharing switch device of thesecond embodiment using a particular example.

FIG. 6 is a block diagram of a system including a sharing switch deviceaccording to a third embodiment of the present invention.

FIG. 7 illustrates a process performed by the master controller of thesharing switch device of FIGS. 1, 4 and 6.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

As required, a detailed illustrative embodiment of the present inventionis disclosed herein. However, techniques, systems and operatingstructures in accordance with the present invention may be embodied in awide variety of forms and modes, some of which may be quite differentfrom those in the disclosed embodiment. Consequently, the specificstructural and functional details disclosed herein are merelyrepresentative, yet in that regard, they are deemed to afford the bestembodiment for purposes of disclosure and to provide a basis for theclaims herein, which define the scope of the present invention. Thefollowing presents a detailed description of the preferred embodiment(as well as some alternative embodiments) of the present invention.

The present invention provides a USB printer sharing switch device withautomatic switching capabilities, which allows multiple computers toconveniently share a USB printer. Both the computers and the printer areconnected to the sharing switch device by USB cables. Preferably, thesharing switch device transfers data in the USB format without changingit from one format to another. The automatic switching function isperformed by hardware and firmware of the sharing switch device incooperation with driver software on the connected computers.

FIG. 1 illustrates a printer sharing system including a sharing switchdevice according to a first embodiment of the present invention. Asshown in FIG. 1, the sharing switch device 10 is coupled to a printer 30and a plurality of computers 20. Four computers 20 (PC-1 to PC-4) areshown in this example. The sharing switch device 10 includes a pluralityof computer-side switches 12 each coupled to a corresponding computer 20and a plurality of USB device controllers 14 each coupled to acorresponding computer-side switch 12. Four computer-side switches 12(SW-1 to SW-4) and four USB device controllers 14 (Contr-1 to Contr-4)are shown in this example, corresponding to the four computers (PC-1 toPC-4). Each computer-side switch 14 is also coupled to an upstream portof a common USB hub 16, such that the computer-side switch 14 switchesthe corresponding computer 20 to either the common USB hub 16 or thecorresponding controller 14. The sharing switch device 10 additionallyincludes a controller-side switch 18 which is coupled at one side to afirst downstream port of the USB hub 16 and at the other side to each ofthe controllers 14, such that the switch 18 switches the USB hub 16 toone of the controllers 14. The printer 30 is coupled to a seconddownstream port of the USB hub 16.

The USB device controllers 14 may be low speed device controllers. Inone implementation, they are USB HID Class (Human Interface Device)device controllers, and the computers 20 use their default HID driver tointeract with the controllers 14. The plurality of controllers 14 arecoupled together and communicate with each other using a master-slavemodel, such that one of the controllers is a master and the others areslaves. The connection lines among the controllers 14 are not shown inFIG. 1 to avoid overcrowding. One or more of the controllers 14 areprogrammed to control the switching operation of the computer-sideswitches 12 and the controller-side switch 18. In principle, one of theUSB device controllers 14, such as the master controller, can controlthe switching operation of all of the switches 12 and 18. In actualimplementation, however, the number of switches that can be controlledby one controller 14 may be limited due to the limited number of pins onthe controller, especially when relatively inexpensive USB devicecontroller chips are used. Therefore, the master controller and one ormore slave controllers 14 may cooperate to perform the functions ofcontrolling the switches 12 and 18. In this respect, when the disclosureor the claims refer to the “device controllers” controlling theswitching of the switches, it should be understood that this does notmean all device controllers must be involved. The control signals aretransmitted between the controllers 14 and the switches 12 and 18 theycontrol via desiccated control lines, which are not shown in FIG. 1 toavoid overcrowding.

Each computer 20 is loaded with a special USB port monitor program 20A,which cooperates with the spooler service of the computer 20 and withthe sharing switch device 10 to accomplish spooling of print data to theshared printer 30, as will be described in more detail later.

The operation of the sharing switch device 10 is described using aparticular example with reference to FIG. 2. In this example, the fourthcomputer PC-4 is currently connected to the printer 30 and spoolingprint data to the printer (step S21). The computer PC-4 is referred toas the currently selected computer. In this state, the fourthcomputer-side switch SW-4 corresponding to the fourth computer PC-4 isswitched to the USB hub 16. Data is communicated between the fourthcomputer PC-4 and the printer 30 via the fourth computer-side switchSW-4 and the USB hub 16. The other computer-side switches 12 (SW-1, SW-2and SW-3) are switched to the corresponding controllers 14 (Contr-1,Contr-2 and Contr-3), respectively. The controller-side switch 18 isswitched to the fourth controller Control-4 corresponding to the fourthcomputer PC-4. Thus, each computer 20 is connected to its correspondingcontroller 14, either via the corresponding computer-side switches 12 inthe case of the non-selected computers PC-1, PC-2 and PC-3 or via thecorresponding computer-side switches 12, the USB hub 16 and thecontroller-side switch 18 in the case of the currently selected computerPC4. As a result, each computer 20 can communicate commands with itscorresponding controller 14.

When the fourth computer PC-4 finishes spooling print data, it transmitsa “spooling finished” command to the corresponding controller Contr-4via the fourth computer-side switch SW-4, the USB hub 16 and thecontroller-side switch 18 (step S22). The fourth controller Contr-4communicates the spooling finished command to the master controller(assuming in this example the master controller is the first controllerContr-1). The master controller (Contr-1) maintains a queue of switchingrequests from the various computers 20. After receiving the spoolingfinished command from the fourth computer, the master controllerretrieves the next switching request from the queue (step S23). If thequeue is empty, the master controller waits to receive the nextswitching request from a computer and puts it in the queue. In thisexample, assume that the next switching request in the queue is arequest from the first computer PC-1 (referred to as the next selectedcomputer). The master controller and the slave controllers 14 (under theinstruction of the master controller) perform appropriate controlfunctions to switch the printer 30 from the currently selected computerPC-4 to the next selected computer PC-1.

Specifically, the fourth computer-side switch SW-4 is controlled toswitch the fourth computer PC-4 to the fourth controller Contr-4 (i.e.it is no longer switched to the USB hub 16) (step S24). The firstcomputer-side switch SW-1 is controlled to switch to the USB hub 16(step S25). The controller-side switch 18 is controlled to switch to thefirst controller Contr-1 (i.e. the controller corresponding to the nextselected computer) (step S25). The order of these switching steps S24 toS26 is not critical. The second and third computer-side switches SW-2and SW-3 need not perform any action because their switching conditionis unchanged.

After these switching operations, the next selected computer PC-1 isconnected to the printer 30 via its corresponding computer-sided switchSW-1 and the USB hub 16. The next selected computer PC-1 is alsoconnected to its corresponding controller Contr-1 via its correspondingcomputer-side switch SW-1, the USB hub 16 and the controller-side switch18. The non-selected computers 20 (PC-2, PC-3 and PC-4) are connected totheir corresponding controllers 14 (Contr-2, Contr-3 and Contr-4) viathe corresponding computer-side switches 12 (SW-2, SW-3 and SW-4). Thenext selected computer PC-1 can now print to the printer 30 (step S27).When PC-1 finished printing, the process is repeated for the nextswitching request.

In the above example, the master controller is one of the USB devicecontrollers 14. Alternatively, the master controller may be a separatecontroller (i.e. not one of the four USB device controllers 14), and thefour USB device controllers 14 are slave controllers. Further, the fourUSB device controllers 14 may be implemented as one control circuit(such as an ASIC, FPGA, etc.) that includes the functionality of fourUSB device controllers. The actual implementation is not important, aslong as there are four USB device controllers corresponding to the fourcomputers PC-1 to PC-4.

FIG. 3 illustrates a process performed by the USB port monitor program20A installed on the computer 20. Within the Windows printingarchitecture, the USB port monitor program 20A is located between theSpooler and the USB Driver Stack, both provided by Windows. For example,the USB port monitor 20A can replace the USB port monitor provided byWindows (Usbmon.dll).

As shown in FIG. 3, when the port monitor 20A receives a spoolingrequest from the spooler (step S31), the port monitor transmits aswitching request to the sharing switch device 10 (step S32). Theswitching request is transmitted automatically without requiring theuser of the computer to issue a switching command. From the user'sstandpoint, only a print command is required. As mentioned earlier, thesharing switch device 10 maintains a queue of switching requestsreceived from the computers 20, and automatically performs switchingoperations to switch the printer 30 from one computer 20 to another whenappropriate. Thus, after transmitting the switching request, the portmonitor 20A monitors the connection status of the sharing switch device10 to determine whether the sharing switch device has connected theprinter 30 to this particular computer (step S33). For example, the portmonitor 20A may monitor the device occupied status of the computer,where an “occupied” status means the connection to the printer isestablished. The monitoring step continues (“N” in step S34) until thesharing switch device 10 connects this computer 20 to the printer 30(“Y” in step S34).

If it is determined that the connection has been established (“Y” instep S34), the port monitor 20A sends a “lock” command to the sharingswitch device 10, then confirms the switch locked status by receiving aresponse from sharing switch device (step S35). Step S35 is optional,because the sharing switch 10 may be designed so that it willautomatically lock the connection after switching, and will unlock itonly after a spooling finished command is received from the currentlyselected computer. Then, the port monitor 20A informs the spooler tostart spooling data (step S36). The spooling process is carried out in acontinuous manner (step S37). More specifically, the port monitor 20Areceives print data from the spooler and transfers it to the printer 30via the sharing switch device 10, and receives printer statusinformation from the printer 30 via the sharing switch device 10 andtransfers it to the spooler. After the spooling process is successfullycompleted, the port monitor 20A receives a notification from thespooler, and transmits a spooling finished command to the sharing switchdevice 10 (step S38).

As mentioned earlier, once the printer 30 is switched to a particularcomputer (the currently selected computer) 20, the sharing switch device10 will not switch the printer to another computer unless a spoolingfinished command is received from the currently selected computer. Afterthe switching steps S24 to S26 (see FIG. 2), if the sharing switchreceives a lock command from the port monitor 20A (see step S35 in FIG.3), it sends a lock confirmed signal back to the port monitor. Thus,spooling by the currently selected computer will not be interrupted.This ensures that spooling will be completed even when abnormalconditions occur at the printer (e.g., paper jam, paper tray empty,etc.).

As mentioned earlier, the computer 20 uses its default USB HID classdevice driver to interact with the controllers 14 of the sharing switchdevice 10. Thus, other than the port monitor 20A described above, thecomputer does not need to be loaded with other special programs.

FIG. 4 illustrates a sharing switch device according to a secondembodiment of the present invention. As shown in FIG. 4, the sharingswitch device 40 is coupled to a printer 30 and a plurality of computers20 (four computers PC-1 to PC-4 are shown in this example). The sharingswitch device 40 includes a plurality of computer-side switches 42 (SW-1to SW-4 in this example) each coupled to a corresponding computer 20,and a plurality of USB device controllers 44. In the example shown inFIG. 4, three USB device controllers 44 (Contr-1 to Contr-3) areprovided. In other words, the number of USB device controllers 44 is onefewer than the number (denoted “N”) of computer-side switches 42. In theillustrated example, the three USB device controllers 44 are coupled bythree corresponding controller-side switches 48 (SW-5 to SW-7) to thefour computer-side switches 42 in a way such that the three controllers44 can be switched to any three out of the four computer-side switchesSW-1 to SW-4. Specifically, in the illustrated example, the firstcontroller-side switch SW-5 switches the first controller Contro-1 toeither the first computer-side switch SW-1 or the next computer-sideswitch SW-2, the second controller-side switch SW-6 switches the secondcontroller Contro-2 to either the second computer-side switch SW-2 orthe next computer-side switch SW-3, etc.

Each computer-side switch 42 is also coupled to the printer 30 via acommon connection line 49, such that the computer-side switch 42switches the corresponding computer 20 to either the printer 30 or oneof the controller-side switched 48.

As in the first embodiment in FIG. 1, the USB device controllers 44 inFIG. 4 may be implemented as USB HID Class device controllers and thecomputers 20 may use their default HID drivers to interact with thecontrollers 44. The plurality of controllers 44 are connected together(connection lines not shown in FIG. 4) and communicate with each otherusing a master-slave model. The master controller and one or more slavecontrollers 44 control the switching operation of the computer-sideswitches 42 and the controller-side switches 48. Again, the desiccatedcontrol lines connecting the controllers 44 and the switches theycontrol are not shown in FIG. 4 to avoid overcrowding.

The sharing switch device 40 also includes a USB busy detection circuit46 coupled to the common connection line 49 between the computer-sideswitches 42 and the printer 30. The USB busy detection circuit 46monitors the signals being transmitted on the connection line 49 todetect whether the line is busy, i.e., whether a computer 20 iscurrently spooling data to the printer 30. The USB busy detectioncircuit 46 transmits signals regarding the detection result to one ofthe controllers 44 (e.g. the master controller) over a control line (notshown in FIG. 4).

Each computer 20 is loaded with a special USB port monitor program 20B,which cooperates with the spooler service of the computer and with thesharing switch device 40 to accomplish spooling of print data to theshared printer 30, as will be described in more detail later.

The operation of the sharing switch device 40 of FIG. 4 is describedusing a particular example with reference to FIG. 5. In this example,the fourth computer PC-4 is currently connected to the printer 30 andspooling data to the printer (it is referred to as the currentlyselected computer) (step S51). In this state, the fourth computer-sideswitch SW-4 corresponding to the fourth computer PC-4 is switched to theprinter 30 via the common connection line 49. Data is communicatedbetween the fourth computer PC-4 and the printer 30 via the fourthcomputer-side switch SW-4. The other three computer-side switches 12(SW-1, SW-2 and SW-3) are switched to the three controller-side switches48. The three controller-side switches 48 are switched such that eachcomputer-side switches 48 for a non-selected computer is connected to aUSB device controller 44. Specifically, in this example, the firstcontroller-side switch SW-5 switches the first controller Contr-1 to thefirst computer-side switch SW-1, the second controller-side switch SW-6switches the second controller Contr-2 to the second computer-sideswitch SW-2, and the third controller-side switch SW-7 switches thethird controller Contr-3 to the third computer-side switch SW-3. As aresult, the three non-selected computers 20 (PC-1, PC-2 and PC-3) areconnected to the three controllers 44 (Contro-1, Contr-2 and Contr-3)and can communicate commands with the corresponding controllers 44.

When a computer is spooling data, the sharing switch device 40continuously determines whether spooling has finished (step S52). In theembodiment of FIG. 4, the currently selected computer 20 (PC-4 in thisexample) is not connected to any USB device controller 44 when thatcomputer is spooling data to the printer. Thus, the currently selectedcomputer 20 is unable to send a spooling finished command to the sharingswitch device 40. The function of determining whether spooling hasfinished is performed by the USB busy detection circuit 46 either aloneor in cooperation with the master controller 44. To ensure that spoolingis not interrupted prematurely, the sharing switch device 40 implementsa delay mechanism so that a predetermined time period of inaction on theconnection line 49 must be detected before the printer can be switchedto another computer. In a preferred embodiment, the USB busy detectioncircuit 46 transmits busy or not-busy signals to the master controller44; for example, it transmits a new signal every time the line conditionchanges from busy to not-busy or vice versa. Based on such signals, themaster controller 44 uses its timer to monitor how long the line hasbeen in the not-busy state, and determines that spooling has finishedafter a predetermined time period when the line has been not-busy. In analternative embodiment, the USB busy detection circuit 46 has a timerand can determine how long the line has been not-busy, and transmits aspooling finished signal to the master controller 44 after apredetermined time period when the line has been not-busy.

The master controller 44 maintains a queue of switching requests fromthe various computers 20. After it is determined that spooling by thecurrently selected computer has finished, the master controllerretrieves the next switching request from the queue (step S53). If thequeue is empty, the master controller waits to receive the nextswitching request from a computer and puts it in the queue. In thisexample, assume that the next switching request in the queue is arequest from the first computer PC-1 (referred to as the next selectedcomputer). The master controller and the slave controllers 44 (under theinstruction of the master controller) perform appropriate controlfunctions to switch the printer 30 from the fourth computer PC-4 to thefirst computer PC-1.

Specifically, in this example, the fourth computer-side switch SW-4 iscontrolled to switch the fourth computer PC-4 to the thirdcontroller-side switch SW-7 (i.e. PC-4 is no longer switched to theprinter 30) (step S54). The first computer-side switch SW-1 iscontrolled to switch the first computer PC-1 to the printer 30 (stepS55). Further, the third controller-side switch SW-7 is controlled toswitch to the fourth computer-side switch SW-4; the secondcontroller-side switch SW-6 is controlled to switch to the thirdcomputer-side switch SW-3; and the first controller-side switch SW-5 iscontrolled to switch to the second computer-side switch SW-2 (step S56).The order of these switching steps S54 to S56 is not critical. Thesecond and third computer-side switches SW-2 and SW-3 need not performany action because their switching condition is unchanged.

After these switching operations, the next selected computer PC-1 isconnected to the printer 30 via its corresponding computer-sided switchSW-1, and the non-selected computers 20 (PC-2, PC-3 and PC-4) areconnected to the controllers 44 (Contr-2, Contr-3 and Contr-4) via thecorresponding computer-side switches 42 (SW-2, SW-3 and SW-4) and thethree controller-side switches 48. The next selected computer PC-1 cannow print to the printer 30 (step S57). When PC-1 finished printing, theprocess is repeated for the next switching request.

The process performed by the port monitor program 20B loaded on thecomputers 20 in the second embodiment shown in FIG. 4 is similar to theprocess shown in FIG. 3 performed by the port monitor program 20A in thefirst embodiment shown in FIG. 1, with a number of differences asexplained below. The first difference is that in step S33, the portmonitor 20B determines the printer connection status by polling the HID(the controller 44) to determine if the HID connection is lost. The lostof the HID connection means the printer connection is established. Thesecond difference is that the port monitor 20B does not perform step S35(send lock command and confirm lock status). The third difference isthat the port monitor 20B does not perform step S38 (transmit a spoolingfinished command to the USB sharing switch device). As mentionedearlier, the USB sharing switch device 40 uses a USB busy detectioncircuit to determine whether spooling by a computer is finished.

As mentioned earlier, once the printer 30 is switched to a particularcomputer (the currently selected computer) 20, the sharing switch device40 will not switch the printer to another computer unless the USB busydetection circuit 46 or the master controller determines that spoolinghas finished. Thus, spooling by the currently selected computer willgenerally not be interrupted, although such interruption is notcompletely prevented.

In the sharing switch device 40 shown in FIG. 4, if a computer 20 isconnected to the printer 30 by the corresponding computer-side switch42, the computer is not connected to a controller 44. The number ofcontrollers 44 can be one fewer than the number of computer-sideswitches 42, which reduces cost. The three controller-side switches 48are provided so that regardless of which computer 20 is switched to theprinter, the other three computer-side switches 42 can be connected tothe three controllers 44. In a variation of the second embodiment, shownin FIG. 6, the sharing switch device 60 has the same number ofcontrollers 64 as the number of computer-side switches 62 and computers20; each controller 64 is directly connected to a correspondingcomputer-side switch 62, and the controller-side switches 48 in FIG. 4are not necessary. In such an alternative structure, one controller 64will not be performing any function when its corresponding computer 20is connected to the printer 30. The operations of the USB busy detectioncircuit 66 and the master controller 64 in FIG. 6 are the same as theoperations of the USB busy detection circuit 46 and the mastercontroller 44 in the embodiment of FIG. 4. The switching operations ofthe computer-side switches 62 are similar to the switching operations ofthe computer-side switches 42 in FIG. 4. The same software 20B as inFIG. 4 can be used in the computers 20.

FIG. 7 summarizes the communication and switching process of the mastercontroller 14/44/64 of the sharing switch device Oct. 40, 1960. Althoughnot shown in FIGS. 1, 4 and 6, one or more buttons may be optionallyprovided on a housing of the sharing switch device Oct. 40, 1960 toperform manual switching. When the master controller receives aswitching request (step S71), it determines whether the switchingrequest is received from the button on the sharing switch device Oct.40, 1960 or from a computer 20 (step S72, optional). If the switchingrequest is entered from a button, the sharing switch device Oct. 40,1960 will initiate the switching operation only if the printer is notcurrently locked by another computer, otherwise the request is ignored(step S76). If the switching request is not received from the button(“N” in step S72), the switching request is placed in the queue (stepS73). The master controller then monitors whether a computer iscurrently printing and determines whether printing is finished (stepS74). As described earlier, this step is performed differently in theembodiment of FIG. 1 and the embodiments of FIGS. 4 and 6. When theprinting is finished, the master controller retrieves the switchingrequest at the front of the queue and initiates the switching operationto switch the next selected computer 20 to the printer 30 (step S75).

Using the sharing switch device described herein, the hardware/firmwareof the sharing switch device and the software in the computers cooperatewith each other to achieve fully automatic switching and printing. Oncethe USB port monitor program is installed on the computers, the user canprint to the printer without performing any extra switching steps. Themaster controller of the sharing switch device implements a queue ofswitching requests, and can fulfill the switching requests on a firstcome, first served basis. In addition, using the embodiment of FIG. 1,the firmware of the sharing switch device can perform switching and lockfunctions without delay.

The printer 30 may be any type of printer, such as ink jet printer orlaser printer.

Although the sharing switch devices in the above described embodimentsuse the USB protocol, other protocols such as IEEE 1394 may be used tointerface with the computer and the printer, as long as the sameprotocol is used for the computer and the printer so that the sharingswitch device does not need to transform the data format between thecomputer and the printer.

Although a printer is used in the above described embodiments as anexample, the sharing switch devices may be used to share otherperipheral devices such as mass storage devices, scanners, etc.Accordingly, references to “spooling” or “printing” in the abovedescription can be replaced with a more general term “data transfer”.For example, the “spooling finished” command can be broadly referred toas a “data transfer finished” command. In the case of these other typesof peripheral devices, appropriate driver software in the computers maybe modified to cooperate with the sharing switch device.

It will be apparent to those skilled in the art that variousmodification and variations can be made in the sharing switch device andmethod of the present invention without departing from the spirit orscope of the invention. Thus, it is intended that the present inventioncover modifications and variations that come within the scope of theappended claims and their equivalents.

1. A sharing switch device for coupling to a peripheral device and aplurality of computers, comprising: a plurality of computer-sideswitches each for coupling to a corresponding computer; a hub devicehaving an upstream end coupled to the plurality of computer-sideswitches, a first downstream end for coupling to the peripheral device,and a second downstream end; a plurality of device controllers eachcoupled to a corresponding computer-side switch, wherein eachcomputer-side switch switches the corresponding computer to either thecorresponding device controller or the upstream end of the hub device;and a controller-side switch coupled to the plurality of devicecontrollers and to the second downstream end of the hub device forswitching the second downstream end of the hub device to one of thedevice controllers.
 2. The sharing switch device of claim 1, wherein thedevice controllers are USB (Universal Serial Bus) device controllers,and wherein the hub device is a USB hub.
 3. The sharing switch device ofclaim 2, wherein the device controllers are USB HID Class (HumanInterface Device) device controllers.
 4. The sharing switch device ofclaim 1, wherein the computer-side switches transfer data between thecomputers and the hub device without changing its format.
 5. The sharingswitch device of claim 1, wherein the device controllers control theswitching of the computer-side switches and the controller-side switchto switch one of the computer-side switches corresponding to a selectedone of the computers to the hub device, switch the other computer-sideswitches to their corresponding device controllers, and switch thecontroller-side switch to the device controller corresponding to theselected computer, whereby the selected computer is connected to theperipheral device via the corresponding computer-side switch and the hubdevice.
 6. The sharing switch device of claim 1, wherein one of thedevice controllers is a master device controller and the other devicecontrollers are slave device controllers controlled by the master devicecontroller.
 7. The sharing switch device of claim 6, wherein the slavedevice controllers transfer switching requests and data transferfinished commands received from their corresponding computers to themaster device controller, wherein the master device controller maintainsa queue of switching requests received from its corresponding computerand from the slave device controllers, and wherein when the masterdevice controller receives a data transfer finished command from itscorresponding computer or from one of the slave device controllers, itretrieves a next switching request from the queue and initiatesswitching of the computer-side switches and the controller-side switchto connect a next computer to the peripheral device.
 8. The sharingswitch device of claim 7, wherein the master device controller initiatesswitching of the computer-side switches and the controller-side switchonly when it receives a data transfer finished command.
 9. In aperipheral device sharing system including a sharing switch device ofclaim 1 and a peripheral device and a plurality of computers coupled tothe sharing switch device, the peripheral device being a printer, a portmonitor program installed on each computer comprising: first programcode causing the computer to automatically transmit a switching requestto the sharing switch device when the port monitor program receives aspooling request from a spooler program on the computer; second programcode causing the computer to monitor a printer connected status and toinitiate spooling to the printer after detecting that the printer isconnected; and third program code causing the computer to transmit adata transfer finished command to the sharing switch device whenspooling to the printer is finished.
 10. A sharing switch device forcoupling to a peripheral device and a plurality of computers,comprising: a plurality of N computer-side switches each for coupling toa corresponding computer; a common connection line for coupling to theperipheral device, the common connection line being coupled to the Ncomputer-side switches; a busy detection circuit coupled to the commonconnection line for detecting a busy condition of the common connectionline and generating signals representing a detection result; a pluralityof N−1 device controllers; and a plurality of controller-side switchescoupled to the N−1 device controllers and to the N computer-sideswitches for switching any combination of N−1 out of the N computer-sideswitches to the N−1 device controllers, wherein each computer-sideswitch switches the corresponding computer to either the commonconnection line or to one or more of the controller-side switches. 11.The sharing switch device of claim 10, wherein the device controllersare USB (Universal Serial Bus) device controllers.
 12. The sharingswitch device of claim 10, wherein the computer-side switches transferdata between the computers and the common connection line withoutchanging its format.
 13. The sharing switch device of claim 10, whereinthe device controllers control the switching of the computer-sideswitches and the controller-side switches to switch the computer-sideswitch corresponding to a selected computer to the common connectionline, switch the other N−1 computer-side switches to the controller-sideswitches, and switch the controller-side switches to connect the otherN−1 computer-side switches to the N−1 device controllers, whereby theselected computer is connected to the peripheral device.
 14. The sharingswitch device of claim 10, wherein one of the device controllers is amaster device controller and the other device controllers are slavedevice controllers controlled by the master device controller.
 15. Thesharing switch device of claim 14, wherein the slave device controllerstransfer switching requests received from their connected computers tothe master device controller, wherein the master device controllermaintains a queue of switching requests received from its connectedcomputer and from the slave device controllers, wherein the busydetection circuit transmits the signals representing the detectionresult to the master device controller, wherein the master devicecontroller determines whether data transfer is finished based on thesignals from the busy detection circuit, and when it determines thatdata transfer is finished, the master device controller retrieves a nextswitching request from the queue and initiates switching of thecomputer-side switches and the controller-side switches to connect anext computer to the peripheral device.
 16. The sharing switch device ofclaim 15, wherein the signals transmitted by the busy detection circuitindicate that data transfer is finished, and wherein the busy detectioncircuit transmits such signals to the master device controller afterdetecting a predetermined time period of inaction on the commonconnection line.
 17. The sharing switch device of claim 15, wherein thesignals transmitted by the busy detection circuit indicate whether thecommon connection line is busy or not-busy, and wherein the masterdevice controller determines that data transfer is finished after apredetermined time period of receiving only not-busy signals from thebusy detection circuit.
 18. In a peripheral device sharing systemincluding a sharing switch device of claim 1 and a peripheral device anda plurality of computers coupled to the sharing switch device, theperipheral device being a printer, a port monitor installed on eachcomputer comprising: first program code causing the computer toautomatically transmit a switching request to the sharing switch devicewhen the port monitor receives a spooling request from a spooler programon the computer; and second program code causing the computer to monitora printer connected status and to initiate spooling to the printer afterdetecting that the printer is connected.
 19. In a peripheral devicesharing system including a sharing switch device and a peripheral deviceand a plurality of computers coupled to the sharing switch device, amethod implemented on the sharing switch device and on each computer,comprising: on the sharing switch device: (a) connecting a currentlyselected computer to the peripheral device; (b) receiving switchingrequests from the plurality of computers; (c) placing the switchingrequests in a queue; (d) determining whether the data transfer betweenthe currently selected computer and the peripheral device has finished;and (e) if it is determined that the currently selected computer hasfinished transferring data, retrieving a next switching request from thequeue and connecting a next selected computer to the peripheral devicebased on the next switching request.
 20. The method of claim 19, furthercomprising: on each computer: (f) automatically transmitting a switchingrequest to the sharing switch device when a program on the computerrequests a data transfer to or from the peripheral device; (g)monitoring a connected status for the peripheral device; and (h) afterdetermining that the peripheral device is connected, transferring datato or from the peripheral device.
 21. The method of claim 20, furthercomprising: on each computer: (i) after data transfer in step (h) isfinished, transmitting a data transfer finished command to the sharingswitch device.
 22. The method of claim 21, wherein in step (d), thesharing switch device determines that the data transfer has finishedafter receiving a data transfer finished command from the currentlyselected computer.
 23. The method of claim 19, wherein in step (d) thesharing switch device determines whether the data transfer has finishedby detecting whether a signal line connected to the peripheral device isbusy or not.